import request from '@/utils/request'

/**
 * 视频流相关API
 */

/**
 * RTSP流转HLS
 * @param {string} rtspUrl - RTSP流地址
 * @param {Object} options - 转码选项
 * @returns {Promise<Object>}
 */
export function convertRTSPToHLS(rtspUrl, options = {}) {
  return request({
    url: '/video/convert-rtsp',
    method: 'post',
    data: {
      rtsp_url: rtspUrl,
      ...options
    }
  })
}

/**
 * 获取视频流信息
 * @param {string} url - 视频流地址
 * @returns {Promise<Object>}
 */
export function getVideoStreamInfo(url) {
  return request({
    url: '/video/stream-info',
    method: 'post',
    data: { url }
  })
}

/**
 * 检查视频流状态
 * @param {string} url - 视频流地址
 * @returns {Promise<Object>}
 */
export function checkStreamStatus(url) {
  return request({
    url: '/video/check-status',
    method: 'post',
    data: { url }
  })
}

/**
 * 获取可用的视频流列表
 * @returns {Promise<Object>}
 */
export function getAvailableStreams() {
  return request({
    url: '/video/streams',
    method: 'get'
  })
}

/**
 * 停止视频流
 * @param {string} streamId - 流ID
 * @returns {Promise<Object>}
 */
export function stopStream(streamId) {
  return request({
    url: `/video/stop-stream/${streamId}`,
    method: 'post'
  })
}

/**
 * 获取RTSP转码后的HLS地址
 * 如果后端没有转码服务，可以使用这个模拟方法
 * @param {string} rtspUrl - 原始RTSP地址
 * @returns {string} - HLS地址
 */
export function getHLSUrl(rtspUrl) {
  // 模拟转码地址
  // 实际项目中，这里应该调用后端API获取真实的HLS地址
  
  // 示例1: 使用Nginx-RTMP转码
  const hlsUrl = rtspUrl
    .replace('rtsp://', 'http://')
    .replace(/:554\//, ':8080/hls/')
    .replace(/openUrl\//, '') + '.m3u8'
  
  return hlsUrl
}

/**
 * 批量获取视频流
 * @param {Array<string>} urls - 视频流地址数组
 * @returns {Promise<Array>}
 */
export function batchGetStreams(urls) {
  const promises = urls.map(url => getVideoStreamInfo(url))
  return Promise.allSettled(promises)
}